/*
 * XML Type:  Relationship
 * Namespace: http:///org/isistan/flabot/coremodel.ecore
 * Java type: org.isistan.flabot.coremodelEcore.Relationship
 *
 * Automatically generated - do not modify.
 */
package org.isistan.flabot.coremodelEcore.impl;
/**
 * An XML Relationship(@http:///org/isistan/flabot/coremodel.ecore).
 *
 * This is a complex type.
 */
public class RelationshipImpl extends org.isistan.flabot.coremodelEcore.impl.NamedElementModelImpl implements org.isistan.flabot.coremodelEcore.Relationship
{
    private static final long serialVersionUID = 1L;
    
    public RelationshipImpl(org.apache.xmlbeans.SchemaType sType)
    {
        super(sType);
    }
    
    private static final javax.xml.namespace.QName PROPERTIES$0 = 
        new javax.xml.namespace.QName("", "properties");
    private static final javax.xml.namespace.QName STEREOTYPE$2 = 
        new javax.xml.namespace.QName("", "stereotype");
    private static final javax.xml.namespace.QName NOTES$4 = 
        new javax.xml.namespace.QName("", "notes");
    private static final javax.xml.namespace.QName SOURCE$6 = 
        new javax.xml.namespace.QName("", "source");
    private static final javax.xml.namespace.QName TARGET$8 = 
        new javax.xml.namespace.QName("", "target");
    private static final javax.xml.namespace.QName STEREOTYPE2$10 = 
        new javax.xml.namespace.QName("", "stereotype");
    private static final javax.xml.namespace.QName NOTES2$12 = 
        new javax.xml.namespace.QName("", "notes");
    private static final javax.xml.namespace.QName DIRECTION$14 = 
        new javax.xml.namespace.QName("", "direction");
    private static final javax.xml.namespace.QName SOURCE2$16 = 
        new javax.xml.namespace.QName("", "source");
    private static final javax.xml.namespace.QName TARGET2$18 = 
        new javax.xml.namespace.QName("", "target");
    
    
    /**
     * Gets array of all "properties" elements
     */
    public org.isistan.flabot.coremodelEcore.Property[] getPropertiesArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(PROPERTIES$0, targetList);
            org.isistan.flabot.coremodelEcore.Property[] result = new org.isistan.flabot.coremodelEcore.Property[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets ith "properties" element
     */
    public org.isistan.flabot.coremodelEcore.Property getPropertiesArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Property target = null;
            target = (org.isistan.flabot.coremodelEcore.Property)get_store().find_element_user(PROPERTIES$0, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target;
        }
    }
    
    /**
     * Returns number of "properties" element
     */
    public int sizeOfPropertiesArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(PROPERTIES$0);
        }
    }
    
    /**
     * Sets array of all "properties" element  WARNING: This method is not atomicaly synchronized.
     */
    public void setPropertiesArray(org.isistan.flabot.coremodelEcore.Property[] propertiesArray)
    {
        check_orphaned();
        arraySetterHelper(propertiesArray, PROPERTIES$0);
    }
    
    /**
     * Sets ith "properties" element
     */
    public void setPropertiesArray(int i, org.isistan.flabot.coremodelEcore.Property properties)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Property target = null;
            target = (org.isistan.flabot.coremodelEcore.Property)get_store().find_element_user(PROPERTIES$0, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(properties);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "properties" element
     */
    public org.isistan.flabot.coremodelEcore.Property insertNewProperties(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Property target = null;
            target = (org.isistan.flabot.coremodelEcore.Property)get_store().insert_element_user(PROPERTIES$0, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "properties" element
     */
    public org.isistan.flabot.coremodelEcore.Property addNewProperties()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Property target = null;
            target = (org.isistan.flabot.coremodelEcore.Property)get_store().add_element_user(PROPERTIES$0);
            return target;
        }
    }
    
    /**
     * Removes the ith "properties" element
     */
    public void removeProperties(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(PROPERTIES$0, i);
        }
    }
    
    /**
     * Gets array of all "stereotype" elements
     */
    public org.isistan.flabot.coremodelEcore.Stereotype[] getStereotypeArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(STEREOTYPE2$10, targetList);
            org.isistan.flabot.coremodelEcore.Stereotype[] result = new org.isistan.flabot.coremodelEcore.Stereotype[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets ith "stereotype" element
     */
    public org.isistan.flabot.coremodelEcore.Stereotype getStereotypeArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Stereotype target = null;
            target = (org.isistan.flabot.coremodelEcore.Stereotype)get_store().find_element_user(STEREOTYPE2$10, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target;
        }
    }
    
    /**
     * Returns number of "stereotype" element
     */
    public int sizeOfStereotypeArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(STEREOTYPE2$10);
        }
    }
    
    /**
     * Sets array of all "stereotype" element  WARNING: This method is not atomicaly synchronized.
     */
    public void setStereotypeArray(org.isistan.flabot.coremodelEcore.Stereotype[] stereotypeArray)
    {
        check_orphaned();
        arraySetterHelper(stereotypeArray, STEREOTYPE2$10);
    }
    
    /**
     * Sets ith "stereotype" element
     */
    public void setStereotypeArray(int i, org.isistan.flabot.coremodelEcore.Stereotype stereotype)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Stereotype target = null;
            target = (org.isistan.flabot.coremodelEcore.Stereotype)get_store().find_element_user(STEREOTYPE2$10, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(stereotype);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "stereotype" element
     */
    public org.isistan.flabot.coremodelEcore.Stereotype insertNewStereotype(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Stereotype target = null;
            target = (org.isistan.flabot.coremodelEcore.Stereotype)get_store().insert_element_user(STEREOTYPE2$10, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "stereotype" element
     */
    public org.isistan.flabot.coremodelEcore.Stereotype addNewStereotype()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Stereotype target = null;
            target = (org.isistan.flabot.coremodelEcore.Stereotype)get_store().add_element_user(STEREOTYPE2$10);
            return target;
        }
    }
    
    /**
     * Removes the ith "stereotype" element
     */
    public void removeStereotype(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(STEREOTYPE2$10, i);
        }
    }
    
    /**
     * Gets array of all "notes" elements
     */
    public org.isistan.flabot.coremodelEcore.Note[] getNotesArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(NOTES2$12, targetList);
            org.isistan.flabot.coremodelEcore.Note[] result = new org.isistan.flabot.coremodelEcore.Note[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets ith "notes" element
     */
    public org.isistan.flabot.coremodelEcore.Note getNotesArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Note target = null;
            target = (org.isistan.flabot.coremodelEcore.Note)get_store().find_element_user(NOTES2$12, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target;
        }
    }
    
    /**
     * Returns number of "notes" element
     */
    public int sizeOfNotesArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(NOTES2$12);
        }
    }
    
    /**
     * Sets array of all "notes" element  WARNING: This method is not atomicaly synchronized.
     */
    public void setNotesArray(org.isistan.flabot.coremodelEcore.Note[] notesArray)
    {
        check_orphaned();
        arraySetterHelper(notesArray, NOTES2$12);
    }
    
    /**
     * Sets ith "notes" element
     */
    public void setNotesArray(int i, org.isistan.flabot.coremodelEcore.Note notes)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Note target = null;
            target = (org.isistan.flabot.coremodelEcore.Note)get_store().find_element_user(NOTES2$12, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(notes);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "notes" element
     */
    public org.isistan.flabot.coremodelEcore.Note insertNewNotes(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Note target = null;
            target = (org.isistan.flabot.coremodelEcore.Note)get_store().insert_element_user(NOTES2$12, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "notes" element
     */
    public org.isistan.flabot.coremodelEcore.Note addNewNotes()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.Note target = null;
            target = (org.isistan.flabot.coremodelEcore.Note)get_store().add_element_user(NOTES2$12);
            return target;
        }
    }
    
    /**
     * Removes the ith "notes" element
     */
    public void removeNotes(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(NOTES2$12, i);
        }
    }
    
    /**
     * Gets array of all "source" elements
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel[] getSourceArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(SOURCE2$16, targetList);
            org.isistan.flabot.coremodelEcore.ComponentModel[] result = new org.isistan.flabot.coremodelEcore.ComponentModel[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets ith "source" element
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel getSourceArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().find_element_user(SOURCE2$16, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target;
        }
    }
    
    /**
     * Returns number of "source" element
     */
    public int sizeOfSourceArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(SOURCE2$16);
        }
    }
    
    /**
     * Sets array of all "source" element  WARNING: This method is not atomicaly synchronized.
     */
    public void setSourceArray(org.isistan.flabot.coremodelEcore.ComponentModel[] sourceArray)
    {
        check_orphaned();
        arraySetterHelper(sourceArray, SOURCE2$16);
    }
    
    /**
     * Sets ith "source" element
     */
    public void setSourceArray(int i, org.isistan.flabot.coremodelEcore.ComponentModel source)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().find_element_user(SOURCE2$16, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(source);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "source" element
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel insertNewSource(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().insert_element_user(SOURCE2$16, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "source" element
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel addNewSource()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().add_element_user(SOURCE2$16);
            return target;
        }
    }
    
    /**
     * Removes the ith "source" element
     */
    public void removeSource(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(SOURCE2$16, i);
        }
    }
    
    /**
     * Gets array of all "target" elements
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel[] getTargetArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            java.util.List targetList = new java.util.ArrayList();
            get_store().find_all_element_users(TARGET2$18, targetList);
            org.isistan.flabot.coremodelEcore.ComponentModel[] result = new org.isistan.flabot.coremodelEcore.ComponentModel[targetList.size()];
            targetList.toArray(result);
            return result;
        }
    }
    
    /**
     * Gets ith "target" element
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel getTargetArray(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().find_element_user(TARGET2$18, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            return target;
        }
    }
    
    /**
     * Returns number of "target" element
     */
    public int sizeOfTargetArray()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().count_elements(TARGET2$18);
        }
    }
    
    /**
     * Sets array of all "target" element  WARNING: This method is not atomicaly synchronized.
     */
    public void setTargetArray(org.isistan.flabot.coremodelEcore.ComponentModel[] targetValueArray)
    {
        check_orphaned();
        arraySetterHelper(targetValueArray, TARGET2$18);
    }
    
    /**
     * Sets ith "target" element
     */
    public void setTargetArray(int i, org.isistan.flabot.coremodelEcore.ComponentModel targetValue)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().find_element_user(TARGET2$18, i);
            if (target == null)
            {
                throw new IndexOutOfBoundsException();
            }
            target.set(targetValue);
        }
    }
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "target" element
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel insertNewTarget(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().insert_element_user(TARGET2$18, i);
            return target;
        }
    }
    
    /**
     * Appends and returns a new empty value (as xml) as the last "target" element
     */
    public org.isistan.flabot.coremodelEcore.ComponentModel addNewTarget()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.ComponentModel target = null;
            target = (org.isistan.flabot.coremodelEcore.ComponentModel)get_store().add_element_user(TARGET2$18);
            return target;
        }
    }
    
    /**
     * Removes the ith "target" element
     */
    public void removeTarget(int i)
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_element(TARGET2$18, i);
        }
    }
    
    /**
     * Gets the "stereotype" attribute
     */
    public java.lang.String getStereotype2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(STEREOTYPE2$10);
            if (target == null)
            {
                return null;
            }
            return target.getStringValue();
        }
    }
    
    /**
     * Gets (as xml) the "stereotype" attribute
     */
    public org.apache.xmlbeans.XmlString xgetStereotype2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(STEREOTYPE2$10);
            return target;
        }
    }
    
    /**
     * True if has "stereotype" attribute
     */
    public boolean isSetStereotype2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().find_attribute_user(STEREOTYPE2$10) != null;
        }
    }
    
    /**
     * Sets the "stereotype" attribute
     */
    public void setStereotype2(java.lang.String stereotype2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(STEREOTYPE2$10);
            if (target == null)
            {
                target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(STEREOTYPE2$10);
            }
            target.setStringValue(stereotype2);
        }
    }
    
    /**
     * Sets (as xml) the "stereotype" attribute
     */
    public void xsetStereotype2(org.apache.xmlbeans.XmlString stereotype2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(STEREOTYPE2$10);
            if (target == null)
            {
                target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(STEREOTYPE2$10);
            }
            target.set(stereotype2);
        }
    }
    
    /**
     * Unsets the "stereotype" attribute
     */
    public void unsetStereotype2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_attribute(STEREOTYPE2$10);
        }
    }
    
    /**
     * Gets the "notes" attribute
     */
    public java.lang.String getNotes2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(NOTES2$12);
            if (target == null)
            {
                return null;
            }
            return target.getStringValue();
        }
    }
    
    /**
     * Gets (as xml) the "notes" attribute
     */
    public org.apache.xmlbeans.XmlString xgetNotes2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(NOTES2$12);
            return target;
        }
    }
    
    /**
     * True if has "notes" attribute
     */
    public boolean isSetNotes2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().find_attribute_user(NOTES2$12) != null;
        }
    }
    
    /**
     * Sets the "notes" attribute
     */
    public void setNotes2(java.lang.String notes2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(NOTES2$12);
            if (target == null)
            {
                target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(NOTES2$12);
            }
            target.setStringValue(notes2);
        }
    }
    
    /**
     * Sets (as xml) the "notes" attribute
     */
    public void xsetNotes2(org.apache.xmlbeans.XmlString notes2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(NOTES2$12);
            if (target == null)
            {
                target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(NOTES2$12);
            }
            target.set(notes2);
        }
    }
    
    /**
     * Unsets the "notes" attribute
     */
    public void unsetNotes2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_attribute(NOTES2$12);
        }
    }
    
    /**
     * Gets the "direction" attribute
     */
    public org.isistan.flabot.coremodelEcore.RelationshipDirection.Enum getDirection()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DIRECTION$14);
            if (target == null)
            {
                return null;
            }
            return (org.isistan.flabot.coremodelEcore.RelationshipDirection.Enum)target.getEnumValue();
        }
    }
    
    /**
     * Gets (as xml) the "direction" attribute
     */
    public org.isistan.flabot.coremodelEcore.RelationshipDirection xgetDirection()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.RelationshipDirection target = null;
            target = (org.isistan.flabot.coremodelEcore.RelationshipDirection)get_store().find_attribute_user(DIRECTION$14);
            return target;
        }
    }
    
    /**
     * True if has "direction" attribute
     */
    public boolean isSetDirection()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().find_attribute_user(DIRECTION$14) != null;
        }
    }
    
    /**
     * Sets the "direction" attribute
     */
    public void setDirection(org.isistan.flabot.coremodelEcore.RelationshipDirection.Enum direction)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(DIRECTION$14);
            if (target == null)
            {
                target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(DIRECTION$14);
            }
            target.setEnumValue(direction);
        }
    }
    
    /**
     * Sets (as xml) the "direction" attribute
     */
    public void xsetDirection(org.isistan.flabot.coremodelEcore.RelationshipDirection direction)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.isistan.flabot.coremodelEcore.RelationshipDirection target = null;
            target = (org.isistan.flabot.coremodelEcore.RelationshipDirection)get_store().find_attribute_user(DIRECTION$14);
            if (target == null)
            {
                target = (org.isistan.flabot.coremodelEcore.RelationshipDirection)get_store().add_attribute_user(DIRECTION$14);
            }
            target.set(direction);
        }
    }
    
    /**
     * Unsets the "direction" attribute
     */
    public void unsetDirection()
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_attribute(DIRECTION$14);
        }
    }
    
    /**
     * Gets the "source" attribute
     */
    public java.lang.String getSource2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(SOURCE2$16);
            if (target == null)
            {
                return null;
            }
            return target.getStringValue();
        }
    }
    
    /**
     * Gets (as xml) the "source" attribute
     */
    public org.apache.xmlbeans.XmlString xgetSource2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(SOURCE2$16);
            return target;
        }
    }
    
    /**
     * True if has "source" attribute
     */
    public boolean isSetSource2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().find_attribute_user(SOURCE2$16) != null;
        }
    }
    
    /**
     * Sets the "source" attribute
     */
    public void setSource2(java.lang.String source2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(SOURCE2$16);
            if (target == null)
            {
                target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(SOURCE2$16);
            }
            target.setStringValue(source2);
        }
    }
    
    /**
     * Sets (as xml) the "source" attribute
     */
    public void xsetSource2(org.apache.xmlbeans.XmlString source2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(SOURCE2$16);
            if (target == null)
            {
                target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(SOURCE2$16);
            }
            target.set(source2);
        }
    }
    
    /**
     * Unsets the "source" attribute
     */
    public void unsetSource2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_attribute(SOURCE2$16);
        }
    }
    
    /**
     * Gets the "target" attribute
     */
    public java.lang.String getTarget2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(TARGET2$18);
            if (target == null)
            {
                return null;
            }
            return target.getStringValue();
        }
    }
    
    /**
     * Gets (as xml) the "target" attribute
     */
    public org.apache.xmlbeans.XmlString xgetTarget2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(TARGET2$18);
            return target;
        }
    }
    
    /**
     * True if has "target" attribute
     */
    public boolean isSetTarget2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            return get_store().find_attribute_user(TARGET2$18) != null;
        }
    }
    
    /**
     * Sets the "target" attribute
     */
    public void setTarget2(java.lang.String target2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target = (org.apache.xmlbeans.SimpleValue)get_store().find_attribute_user(TARGET2$18);
            if (target == null)
            {
                target = (org.apache.xmlbeans.SimpleValue)get_store().add_attribute_user(TARGET2$18);
            }
            target.setStringValue(target2);
        }
    }
    
    /**
     * Sets (as xml) the "target" attribute
     */
    public void xsetTarget2(org.apache.xmlbeans.XmlString target2)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.XmlString target = null;
            target = (org.apache.xmlbeans.XmlString)get_store().find_attribute_user(TARGET2$18);
            if (target == null)
            {
                target = (org.apache.xmlbeans.XmlString)get_store().add_attribute_user(TARGET2$18);
            }
            target.set(target2);
        }
    }
    
    /**
     * Unsets the "target" attribute
     */
    public void unsetTarget2()
    {
        synchronized (monitor())
        {
            check_orphaned();
            get_store().remove_attribute(TARGET2$18);
        }
    }
}
